Remove vrf v1#22380
Conversation
CORA - Pending Reviewers
Legend: ✅ Approved | ❌ Changes Requested | 💬 Commented | 🚫 Dismissed | ⏳ Pending | ❓ Unknown For more details, see the full review summary. |
|
✅ No conflicts with other open PRs targeting |
|
I see you updated files related to
|
|
There was a problem hiding this comment.
Pull request overview
Risk Rating: HIGH — Removes a legacy VRF implementation (listener, pipeline task, tests, scripts) and changes validation/creation paths for related jobs.
This PR removes VRFv1 support from Chainlink Core (while keeping legacy DB fields/tables for upgrade compatibility), and updates pipeline parsing plus blockhash-related job validation/tests/docs to align with a VRFv2 / VRFv2Plus-only world.
Changes:
- Remove VRFv1 listener/service, legacy
vrfpipeline task implementation, and VRFv1 scripts/cross-tests. - Update VRF/blockhashstore/blockheaderfeeder validation and test fixtures to require VRFv2/VRFv2Plus tasks/addresses.
- Remove devenv VRFv1 product/test wiring and update docs/diagrams/changelog/workflows accordingly.
Scrupulous human review needed (targeted areas):
core/services/blockhashstore/validate.goandcore/services/blockheaderfeeder/validate.go: ensure spec validation remains consistent with DB constraints during job creation.core/services/pipeline/common.go: legacy task-type rejection path and user-facing error messaging for migration.core/services/vrf/delegate.go: confirm v2/v2plus service selection logic remains correct after v1 removal.
Reviewed changes
Copilot reviewed 61 out of 61 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| docs/core/DATA_FLOW.md | Removes VRFv1 listener from data-flow diagram. |
| devenv/tests/vrf/smoke_test.go | Removes devenv VRFv1 smoke tests. |
| devenv/README.md | Removes VRFv1 matrix entry and updates example commands. |
| devenv/products/vrf/configuration.go | Removes devenv VRFv1 product configurator. |
| devenv/products/vrf/basic.toml | Removes devenv VRFv1 product TOML. |
| devenv/MIGRATION_GUIDE.md | Updates references from VRFv1 to VRFv2 examples. |
| devenv/environment.go | Removes vrf product registration. |
| devenv/design.md | Removes VRFv1 product from design docs and updates examples. |
| deployment/environment/nodeclient/chainlink_models.go | Removes legacy VRFv1 pipeline spec model. |
| core/web/resolver/spec.go | Clarifies V1 coordinator address resolver docs as “legacy”. |
| core/web/resolver/spec_test.go | Updates expectations for coordinatorV1Address to be null in test fixtures. |
| core/web/presenters/job_test.go | Updates JSON presenter expectations for coordinatorV1Address to be null. |
| core/web/jobs_controller_test.go | Adjusts eth client mocks to allow VRFv2 service startup in controller tests. |
| core/testdata/testspecs/v2_specs.go | Removes VRFv1 observationSource generation; adds OmitGasLanePrice; ensures fromAddresses emitted. |
| core/services/vrf/vrftesthelpers/helpers.go | Removes VRFv1 universe helpers; updates BHS/BHF helper signatures for v2/v2plus. |
| core/services/vrf/vrfcommon/validate.go | Drops acceptance of legacy vrf pipeline task; requires vrfv2/vrfv2plus tasks. |
| core/services/vrf/vrfcommon/validate_test.go | Updates validation tests to use a minimal vrfv2 pipeline and include fromAddresses. |
| core/services/vrf/vrfcommon/starting_response_counts_v1.go | Adds shared helper for reading legacy v1-shaped response counts from tx meta. |
| core/services/vrf/vrfcommon/metrics.go | Removes VRF v1 version constant. |
| core/services/vrf/v2/integration_v2_test.go | Uses shared helper for legacy v1 starting counts test path. |
| core/services/vrf/v2/integration_helpers_test.go | Updates BHS/BHF job creation helpers to remove v1 coordinator arg. |
| core/services/vrf/v2/bhs_feeder_test.go | Updates BHS job creation helper call signature. |
| core/services/vrf/v1/listener_v1.go | Removes VRFv1 listener implementation. |
| core/services/vrf/v1/listener_v1_test.go | Removes VRFv1 listener unit tests. |
| core/services/vrf/v1/listener_v1_test_helpers.go | Removes VRFv1 listener test helpers. |
| core/services/vrf/v1/integration_test.go | Removes VRFv1 integration tests. |
| core/services/vrf/solidity_cross_tests/vrf_v08_solidity_crosscheck_test.go | Removes VRFv1 solidity cross-check tests. |
| core/services/vrf/solidity_cross_tests/vrf_solidity_crosscheck_test.go | Removes VRFv1 solidity cross-check tests. |
| core/services/vrf/solidity_cross_tests/vrf_request_cost_test.go | Removes VRFv1 gas-cost measurement tests. |
| core/services/vrf/solidity_cross_tests/vrf_randomness_output_cost_test.go | Removes VRFv1 gas-cost measurement tests. |
| core/services/vrf/solidity_cross_tests/vrf_hash_to_curve_cost_test.go | Removes VRFv1 gas-cost measurement tests. |
| core/services/vrf/solidity_cross_tests/vrf_fulfillment_cost_test.go | Removes VRFv1 gas-cost measurement tests. |
| core/services/vrf/solidity_cross_tests/vrf_coordinator_solidity_crosscheck_test.go | Removes VRFv1 coordinator cross-check tests. |
| core/services/vrf/solidity_cross_tests/vrf_coordinator_interface.go | Removes VRFv1 coordinator interface helper code used only by deleted tests. |
| core/services/vrf/solidity_cross_tests/vrf_coordinator_interface_test.go | Removes tests for deleted VRFv1 coordinator interface helpers. |
| core/services/vrf/solidity_cross_tests/vrf_coordinator_abi_values.go | Removes ABI parsing helpers used only by deleted VRFv1 tests. |
| core/services/vrf/solidity_cross_tests/vrf_consumer_base_test.go | Removes VRFv1 consumer base cross-test. |
| core/services/vrf/proof/proof_response_test.go | Drops on-chain verification dependency for marshaling test after v1 removal. |
| core/services/vrf/delegate.go | Removes VRFv1 listener service wiring; tightens error messaging to vrfv2/v2plus only. |
| core/services/vrf/delegate_test.go | Removes VRFv1 delegate tests and updates remaining tests to use vrfv2 specs. |
| core/services/relay/relay.go | Removes OCR2VRF plugin provider case. |
| core/services/pipeline/vrf_keystore.go | Extracts VRF keystore interface used by vrfv2/v2plus pipeline tasks. |
| core/services/pipeline/task.vrf.go | Removes legacy VRFv1 pipeline task implementation. |
| core/services/pipeline/runner.go | Removes VRFv1 task initialization path. |
| core/services/pipeline/common.go | Makes vrf task type explicitly rejected with a migration error message. |
| core/services/pipeline/common_test.go | Adds test ensuring legacy vrf task type is rejected. |
| core/services/job/models.go | Marks coordinatorV1 fields as legacy/compat-only in job spec models. |
| core/services/job/job_orm_test.go | Updates job ORM tests to avoid coordinatorV1 and ensure vrfv2 specs include fromAddresses. |
| core/services/blockheaderfeeder/validate.go | Rejects non-zero coordinatorV1 and requires v2/v2plus coordinator address fields. |
| core/services/blockheaderfeeder/validate_test.go | Updates validation tests to expect nil coordinatorV1 and new required-field messaging. |
| core/services/blockheaderfeeder/delegate.go | Removes VRFv1 coordinator wiring for block header feeder. |
| core/services/blockhashstore/validate.go | Rejects non-zero coordinatorV1 and requires v2/v2plus coordinator address fields. |
| core/services/blockhashstore/validate_test.go | Updates validation tests to expect coordinatorV1 rejected and new required-field messaging. |
| core/services/blockhashstore/feeder_test.go | Removes VRFv1 logpoller feeder tests/helpers. |
| core/services/blockhashstore/delegate.go | Removes VRFv1 coordinator wiring for blockhash store. |
| core/services/blockhashstore/delegate_test.go | Updates delegate tests to exclude VRFv1 coordinator. |
| core/services/blockhashstore/coordinators.go | Removes VRFv1 coordinator implementation. |
| core/scripts/vrfv1/README.md | Removes VRFv1 script documentation. |
| core/scripts/vrfv1/main.go | Removes VRFv1 script implementation. |
| .github/workflows/legacy-system-tests.yml | Removes legacy VRFv1 smoke job from CI workflow matrix. |
| .changeset/minor-bump-1778011583.md | Updates changeset to document VRFv1 removal as breaking change. |
| hasV2Plus := spec.CoordinatorV2PlusAddress != nil && spec.CoordinatorV2PlusAddress.Hex() != EmptyAddress | ||
| if !hasV2 && !hasV2Plus { | ||
| return jb, errors.New( | ||
| `at least one of "coordinatorV2Address" and "coordinatorV2PlusAddress" must be set`) |
| hasV2 := spec.CoordinatorV2Address != nil && spec.CoordinatorV2Address.Hex() != emptyCoordinatorAddress | ||
| hasV2Plus := spec.CoordinatorV2PlusAddress != nil && spec.CoordinatorV2PlusAddress.Hex() != emptyCoordinatorAddress | ||
| if !hasV2 && !hasV2Plus { | ||
| return jb, errors.New( | ||
| `at least one of "coordinatorV1Address", "coordinatorV2Address" and "coordinatorV2PlusAddress" must be set`) | ||
| `at least one of "coordinatorV2Address" and "coordinatorV2PlusAddress" must be set`) |




This PR removes VRFv1 support from the Core Node. It still keeps the database tables around, so upgrading into this version won't remove active specs. They simply won't run anymore.
It also removes BHS v1 features